μΈμ¦ λ°μ΄ν° κ΄λ¦¬λ₯Ό μν μμ ν νλ‘ νΈμλ μ격 μ¦λͺ μ μ₯ μ λ΅μ μ΄ν΄λ³΄μΈμ. μΉ μ ν리μΌμ΄μ 보μμ μν λͺ¨λ² μ¬λ‘, μ μ¬μ μ·¨μ½μ , κ·Έλ¦¬κ³ κ°λ ₯ν μ루μ μ μμ보μΈμ.
νλ‘ νΈμλ μ격 μ¦λͺ μ μ₯μ: μΈμ¦ λ°μ΄ν° κ΄λ¦¬λ₯Ό μν μ’ ν© κ°μ΄λ
νλ μΉ μ ν리μΌμ΄μ κ°λ° μμμμ νλ‘ νΈμλμ μ¬μ©μ μ격 μ¦λͺ μ μμ νκ² κ΄λ¦¬νλ κ²μ λ§€μ° μ€μν©λλ€. μ΄ κ°μ΄λλ νλ‘ νΈμλ μ격 μ¦λͺ μ μ₯μμ λν ν¬κ΄μ μΈ κ°μλ₯Ό μ 곡νλ©°, μ¬μ©μ μΈμ¦ λ°μ΄ν°μ 보μμ 보μ₯νκΈ° μν λͺ¨λ² μ¬λ‘, μ μ¬μ μ·¨μ½μ λ° κ°λ ₯ν μ루μ μ λ€λ£Ήλλ€.
μμ ν μ격 μ¦λͺ μ μ₯μ μ€μμ± μ΄ν΄
μΈμ¦μ μΉ μ ν리μΌμ΄μ 보μμ μ΄μμ λλ€. μ¬μ©μκ° λ‘κ·ΈμΈνλ©΄, μΈμ¦λ μΈμ μ μ μ§νκΈ° μν΄ μ격 μ¦λͺ (μΌλ°μ μΌλ‘ μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈ λλ μΈμ¦ ν λ°μ ν ν°)μ΄ νλ‘ νΈμλμ μμ νκ² μ μ₯λμ΄μΌ ν©λλ€. λΆμ μ ν μ μ₯μ λ€μκ³Ό κ°μ μ¬κ°ν 보μ μ·¨μ½μ μΌλ‘ μ΄μ΄μ§ μ μμ΅λλ€:
- μ¬μ΄νΈ κ° μ€ν¬λ¦½ν (XSS): 곡격μκ° μΉμ¬μ΄νΈμ μ μ± μ€ν¬λ¦½νΈλ₯Ό μ£Όμ νμ¬ μ·¨μ½ν μμΉμ μ μ₯λ μ¬μ©μ μ격 μ¦λͺ μ νμΉ μ μμ΅λλ€.
- μ¬μ΄νΈ κ° μμ² μμ‘° (CSRF): 곡격μλ κΈ°μ‘΄ μΈμ¦ μΈμ μ μ¬μ©νμ¬ μ¬μ©μκ° μλνμ§ μμ μμ μ μννλλ‘ μμΌ μ μμ΅λλ€.
- λ°μ΄ν° μ μΆ: μμλ νλ‘ νΈμλ μ μ₯μλ λ―Όκ°ν μ¬μ©μ λ°μ΄ν°λ₯Ό λ ΈμΆνμ¬ μ μ λμ© λ° κΈ°ν μ¬κ°ν κ²°κ³Όλ₯Ό μ΄λν μ μμ΅λλ€.
λ°λΌμ μ¬λ°λ₯Έ μ μ₯ λ©μ»€λμ¦μ μ ννκ³ κ°λ ₯ν 보μ μ‘°μΉλ₯Ό ꡬννλ κ²μ μ¬μ©μ λ°μ΄ν°λ₯Ό 보νΈνκ³ μΉ μ ν리μΌμ΄μ μ 무결μ±μ μ μ§νλ λ° λ§€μ° μ€μν©λλ€.
μΌλ°μ μΈ νλ‘ νΈμλ μ μ₯ μ΅μ : κ°μ
νλ‘ νΈμλμ μ격 μ¦λͺ μ μ μ₯νλ λ°λ μ¬λ¬ κ°μ§ μ΅μ μ΄ μμΌλ©°, κ°κ° κ³ μ ν 보μμμ μλ―Έμ νκ³κ° μμ΅λλ€:
1. μΏ ν€
μΏ ν€λ μΉμ¬μ΄νΈκ° μ¬μ©μ μ»΄ν¨ν°μ μ μ₯νλ μμ ν μ€νΈ νμΌμ λλ€. μΌλ°μ μΌλ‘ μ¬μ©μ μΈμ μ μ μ§νκ³ μ¬μ©μ νλμ μΆμ νλ λ° μ¬μ©λ©λλ€. μΏ ν€λ μΈμ¦ ν ν°μ μ μ₯νλ νΈλ¦¬ν λ°©λ²μΌ μ μμ§λ§, μ¬λ°λ₯΄κ² ꡬνλμ§ μμΌλ©΄ 보μ μ·¨μ½μ μ λ ΈμΆλ μλ μμ΅λλ€.
μ₯μ :
- λͺ¨λ λΈλΌμ°μ μμ λ리 μ§μλ©λλ€.
- λ§λ£ λ μ§λ₯Ό ꡬμ±ν μ μμ΅λλ€.
λ¨μ :
- μ μ₯ μ©λμ΄ μ νμ μ λλ€(μΌλ°μ μΌλ‘ 4KB).
- XSS λ° CSRF 곡격μ μ·¨μ½ν©λλ€.
- μλ°μ€ν¬λ¦½νΈλ‘ μ κ·Όν μ μμ΄ μ μ± μ€ν¬λ¦½νΈμ μ·¨μ½ν©λλ€.
- HTTPSλ₯Ό ν΅ν΄ μ μ‘λμ§ μμΌλ©΄ κ°λ‘μ± μ μμ΅λλ€.
μΏ ν€μ λν 보μ κ³ λ € μ¬ν:
- HttpOnly νλκ·Έ:
HttpOnlyνλκ·Έλ₯Ό μ€μ νμ¬ μλ°μ€ν¬λ¦½νΈκ° μΏ ν€μ μ κ·Όνλ κ²μ λ°©μ§ν©λλ€. μ΄λ XSS 곡격μ μννλ λ° λμμ΄ λ©λλ€. - Secure νλκ·Έ:
Secureνλκ·Έλ₯Ό μ€μ νμ¬ μΏ ν€κ° HTTPSλ₯Ό ν΅ν΄μλ§ μ μ‘λλλ‘ ν©λλ€. - SameSite μμ±:
SameSiteμμ±μ μ¬μ©νμ¬ CSRF 곡격μ λ°©μ§ν©λλ€. κΆμ₯ κ°μStrictλλLaxμ λλ€. - μ§§μ λ§λ£ μκ°: μ격 μ¦λͺ μ μ₯κΈ°κ° μΏ ν€μ μ μ₯νμ§ λ§μμμ€. μ§§μ λ§λ£ μκ°μ μ¬μ©νμ¬ κ³΅κ²©μμ κΈ°ν μ°½μ μ ννμμμ€.
μμ: Node.jsμ Expressμμ 보μ μΏ ν€ μ€μ νκΈ°
res.cookie('authToken', token, {
httpOnly: true,
secure: true,
sameSite: 'strict',
expires: new Date(Date.now() + 3600000) // 1 hour
});
2. localStorage
localStorageλ λ§λ£ λ μ§ μμ΄ λΈλΌμ°μ μ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ μΉ μ€ν λ¦¬μ§ APIμ
λλ€. μΏ ν€λ³΄λ€ λ λ§μ μ μ₯ μ©λμ μ 곡νμ§λ§ XSS 곡격μ λ μ·¨μ½ν©λλ€.
μ₯μ :
- μΏ ν€μ λΉν΄ λ ν° μ μ₯ μ©λ(μΌλ°μ μΌλ‘ 5-10MB).
- λ°μ΄ν°κ° λΈλΌμ°μ μΈμ κ°μ μ μ§λ©λλ€.
λ¨μ :
- μλ°μ€ν¬λ¦½νΈλ‘ μ κ·Όν μ μμ΄ XSS 곡격μ λ§€μ° μ·¨μ½ν©λλ€.
- μλμΌλ‘ μνΈνλμ§ μμ΅λλ€.
- λ°μ΄ν°κ° μΌλ° ν μ€νΈλ‘ μ μ₯λμ΄ μΉμ¬μ΄νΈκ° μμλ κ²½μ° μ½κ² λλλΉν μ μμ΅λλ€.
- λμΌ μΆμ² μ μ± (same-origin policy)μ μ μ©μ λ°μ§ μμΌλ―λ‘ λμΌν λλ©μΈμμ μ€νλλ λͺ¨λ μ€ν¬λ¦½νΈκ° λ°μ΄ν°μ μ κ·Όν μ μμ΅λλ€.
localStorageμ λν 보μ κ³ λ € μ¬ν:
μΈμ¦ ν ν°κ³Ό κ°μ λ―Όκ°ν λ°μ΄ν°λ₯Ό localStorageμ μ μ₯νμ§ λ§μμμ€. λ΄μ¬λ μ·¨μ½μ λλ¬Έμ localStorageλ μΌλ°μ μΌλ‘ μ격 μ¦λͺ
μ μ μ₯νλ λ° κΆμ₯λμ§ μμ΅λλ€. κΌ μ¬μ©ν΄μΌ νλ€λ©΄, κ°λ ₯ν XSS λ°©μ§ μ‘°μΉλ₯Ό ꡬννκ³ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μ μ μνΈννλ κ²μ κ³ λ €νμμμ€.
3. sessionStorage
sessionStorageλ localStorageμ μ μ¬νμ§λ§, λ°μ΄ν°λ λΈλΌμ°μ μΈμ
κΈ°κ° λμλ§ μ μ₯λ©λλ€. μ¬μ©μκ° λΈλΌμ°μ μ°½μ΄λ νμ λ«μΌλ©΄ λ°μ΄ν°κ° μλμΌλ‘ μ§μμ§λλ€.
μ₯μ :
- λΈλΌμ°μ μΈμ μ΄ λλλ©΄ λ°μ΄ν°κ° μ§μμ§λλ€.
- μΏ ν€μ λΉν΄ λ ν° μ μ₯ μ©λμ κ°μ§λλ€.
λ¨μ :
- μλ°μ€ν¬λ¦½νΈλ‘ μ κ·Όν μ μμ΄ XSS 곡격μ μ·¨μ½ν©λλ€.
- μλμΌλ‘ μνΈνλμ§ μμ΅λλ€.
- λ°μ΄ν°κ° μΌλ° ν μ€νΈλ‘ μ μ₯λ©λλ€.
sessionStorageμ λν 보μ κ³ λ € μ¬ν:
localStorageμ λ§μ°¬κ°μ§λ‘, XSS 곡격μ λν μ·¨μ½μ± λλ¬Έμ sessionStorageμ λ―Όκ°ν λ°μ΄ν°λ₯Ό μ μ₯νλ κ²μ νΌνμμμ€. μΈμ
μ΄ μ’
λ£λ λ λ°μ΄ν°κ° μ§μμ§λλΌλ, μΈμ
μ€μ 곡격μκ° μ
μ± μ€ν¬λ¦½νΈλ₯Ό μ£Όμ
νλ©΄ μ¬μ ν λ°μ΄ν°κ° μμλ μ μμ΅λλ€.
4. IndexedDB
IndexedDBλ νμΌ λ° λΈλ‘(blob)μ ν¬ν¨νμ¬ λ λ§μ μμ ꡬ쑰νλ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ λ κ°λ ₯ν ν΄λΌμ΄μΈνΈ μΈ‘ μ€ν λ¦¬μ§ APIμ
λλ€. localStorage λ° sessionStorageμ λΉν΄ λ°μ΄ν° κ΄λ¦¬ λ° λ³΄μμ λν λ λ§μ μ μ΄ κΈ°λ₯μ μ 곡ν©λλ€.
μ₯μ :
localStorageλ°sessionStorageλ³΄λ€ ν° μ μ₯ μ©λμ κ°μ§λλ€.- λ°μ΄ν° 무결μ±μ μν νΈλμμ μ μ§μν©λλ€.
- ν¨μ¨μ μΈ λ°μ΄ν° κ²μμ μν μΈλ±μ±μ νμ©ν©λλ€.
λ¨μ :
localStorageλ°sessionStorageμ λΉν΄ μ¬μ©μ΄ λ 볡μ‘ν©λλ€.- μ¬μ ν μλ°μ€ν¬λ¦½νΈλ‘ μ κ·Όν μ μμ΄ μ μ€νκ² κ΅¬ννμ§ μμΌλ©΄ XSS 곡격μ μ·¨μ½ν μ μμ΅λλ€.
IndexedDBμ λν 보μ κ³ λ € μ¬ν:
- μνΈν: IndexedDBμ μ μ₯νκΈ° μ μ λ―Όκ°ν λ°μ΄ν°λ₯Ό μνΈννμμμ€.
- μ λ ₯ μ ν¨μ± κ²μ¬: μ£Όμ 곡격μ λ°©μ§νκΈ° μν΄ μ μ₯νκΈ° μ μ λͺ¨λ λ°μ΄ν°λ₯Ό μ μ€νκ² κ²μ¦νμμμ€.
- μ½ν μΈ λ³΄μ μ μ± (CSP): XSS 곡격μ μννκΈ° μν΄ κ°λ ₯ν CSPλ₯Ό ꡬννμμμ€.
5. μΈ-λ©λͺ¨λ¦¬ μ€ν 리μ§
μ격 μ¦λͺ μ λ©λͺ¨λ¦¬μλ§ μ μ₯νλ κ²μ λ¨κΈ°μ μΌλ‘ κ°μ₯ λμ μμ€μ 보μμ μ 곡ν©λλ€. λ°μ΄ν°λ μ ν리μΌμ΄μ μ΄ μ€νλλ λμμλ§ μ¬μ©ν μ μκΈ° λλ¬Έμ λλ€. κ·Έλ¬λ μ΄ μ κ·Ό λ°©μμ κ° νμ΄μ§ μλ‘κ³ μΉ¨ λλ μ ν리μΌμ΄μ μ¬μμ μ μ¬μΈμ¦μ΄ νμν©λλ€.
μ₯μ :
- λ°μ΄ν°κ° μ§μλμ§ μμ μ₯κΈ°μ μΈ λ°μ΄ν° μμ μνμ μ€μ λλ€.
- ꡬνμ΄ κ°λ¨ν©λλ€.
λ¨μ :
- κ° νμ΄μ§ μλ‘κ³ μΉ¨ λλ μ ν리μΌμ΄μ μ¬μμ μ μ¬μΈμ¦μ΄ νμνμ¬ μ¬μ©μ κ²½νμ΄ μ νλ μ μμ΅λλ€.
- λΈλΌμ°μ κ° μΆ©λνκ±°λ μ¬μ©μκ° νμ λ«μΌλ©΄ λ°μ΄ν°κ° μμ€λ©λλ€.
μΈ-λ©λͺ¨λ¦¬ μ€ν 리μ§μ λν 보μ κ³ λ € μ¬ν:
μΈ-λ©λͺ¨λ¦¬ μ€ν 리μ§λ μꡬ μ μ₯μλ³΄λ€ λ³Έμ§μ μΌλ‘ λ μμ νμ§λ§, λ©λͺ¨λ¦¬ μμ λ° κΈ°ν μ μ¬μ μ·¨μ½μ μΌλ‘λΆν° 보νΈνλ κ²μ΄ μ¬μ ν μ€μν©λλ€. λ©λͺ¨λ¦¬μ μ μ₯νκΈ° μ μ λͺ¨λ λ°μ΄ν°λ₯Ό μ μ ν μ μ (sanitize)νμμμ€.
6. μ 3μ λΌμ΄λΈλ¬λ¦¬ λ° μλΉμ€
μ¬λ¬ μ 3μ λΌμ΄λΈλ¬λ¦¬ λ° μλΉμ€κ° νλ‘ νΈμλ μ ν리μΌμ΄μ μ μν μμ ν μ격 μ¦λͺ μ μ₯ μ루μ μ μ 곡ν©λλ€. μ΄λ¬ν μ루μ μ μ’ μ’ μνΈν, ν ν° κ΄λ¦¬, XSS/CSRF 보νΈμ κ°μ κΈ°λ₯μ μ 곡ν©λλ€.
μμ:
- Auth0: μμ ν ν ν° κ΄λ¦¬ λ° μ격 μ¦λͺ μ μ₯μ μ 곡νλ μΈκΈ° μλ μΈμ¦ λ° κΆν λΆμ¬ νλ«νΌμ λλ€.
- Firebase Authentication: μμ ν μ¬μ©μ μΈμ¦ λ° κ΄λ¦¬λ₯Ό μ 곡νλ ν΄λΌμ°λ κΈ°λ° μΈμ¦ μλΉμ€μ λλ€.
- AWS Amplify: μΈμ¦ λ° κΆν λΆμ¬ κΈ°λ₯μ ν¬ν¨νμ¬ μμ νκ³ νμ₯ κ°λ₯ν λͺ¨λ°μΌ λ° μΉ μ ν리μΌμ΄μ μ ꡬμΆνκΈ° μν νλ μμν¬μ λλ€.
μ₯μ :
- μμ ν μ격 μ¦λͺ μ μ₯ ꡬνμ΄ λ¨μνλ©λλ€.
- 보μ μ·¨μ½μ μ μνμ΄ κ°μν©λλ€.
- μ’ μ’ ν ν° κ°±μ λ° λ€λ¨κ³ μΈμ¦κ³Ό κ°μ κΈ°λ₯μ΄ ν¬ν¨λ©λλ€.
λ¨μ :
- μ 3μ μλΉμ€μ λν μμ‘΄μ±μ΄ μκΉλλ€.
- μλΉμ€ μ¬μ©κ³Ό κ΄λ ¨λ μ μ¬μ λΉμ©μ΄ λ°μν μ μμ΅λλ€.
- κΈ°μ‘΄ μΈμ¦ μμ€ν κ³Όμ ν΅ν©μ΄ νμν μ μμ΅λλ€.
μμ ν νλ‘ νΈμλ μ격 μ¦λͺ μ μ₯μ μν λͺ¨λ² μ¬λ‘
μ νν μ μ₯ μ΅μ μ κ΄κ³μμ΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ κ²μ΄ μ¬μ©μ μ격 μ¦λͺ μ 보μμ 보μ₯νλ λ° νμμ μ λλ€:
1. μ격 μ¦λͺ μ μ₯ μ΅μν
μ격 μ¦λͺ μ 보νΈνλ κ°μ₯ μ’μ λ°©λ²μ νλ‘ νΈμλμ μμ μ μ₯νμ§ μλ κ²μ λλ€. ν ν° κΈ°λ° μΈμ¦ μ¬μ©μ κ³ λ €νμμμ€. μ΄ λ°©μμμλ μλ²κ° μ±κ³΅μ μΈ μΈμ¦ ν λ¨κΈ° ν ν°μ λ°κΈν©λλ€. κ·Έλ¬λ©΄ νλ‘ νΈμλλ μ¬μ©μμ μ€μ μ격 μ¦λͺ μ μ μ₯ν νμ μμ΄ μ΄ ν ν°μ μ¬μ©νμ¬ λ³΄νΈλ 리μμ€μ μ κ·Όν μ μμ΅λλ€.
μμ: JSON μΉ ν ν° (JWT)
JWTλ ν ν° κΈ°λ° μΈμ¦μ ꡬννλ μΈκΈ° μλ λ°©λ²μ λλ€. μ¬μ©μλ₯Ό μΈμ¦νλ λ° νμν λͺ¨λ μ 보λ₯Ό ν¬ν¨νλ μ체 ν¬ν¨ ν ν°μ λλ€. JWTλ 무결μ±μ 보μ₯νκ³ λ³μ‘°λ₯Ό λ°©μ§νκΈ° μν΄ λμ§νΈ μλͺ λ μ μμ΅λλ€.
2. HTTPS μ¬μ©
ν΄λΌμ΄μΈνΈμ μλ² κ°μ λͺ¨λ ν΅μ μ μνΈννκΈ° μν΄ νμ HTTPSλ₯Ό μ¬μ©νμμμ€. μ΄λ 곡격μκ° μ μ‘ μ€μΈ μ격 μ¦λͺ μ κ°λ‘μ±λ κ²μ λ°©μ§ν©λλ€.
3. μ½ν μΈ λ³΄μ μ μ± (CSP) ꡬν
CSPλ λΈλΌμ°μ κ° λ‘λν μ μλ 리μμ€λ₯Ό μ μ΄ν μ μλ 보μ λ©μ»€λμ¦μ λλ€. CSPλ₯Ό μ μ€νκ² κ΅¬μ±νλ©΄ XSS 곡격 λ° κΈ°ν μ νμ μ μ± μ½λ μ£Όμ μ λ°©μ§ν μ μμ΅λλ€.
CSP ν€λ μμ:
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;
4. μ λ ₯ λ°μ΄ν° μ μ
νλ‘ νΈμλμ μ μ₯νκΈ° μ μ νμ λͺ¨λ μ¬μ©μ μ λ ₯ λ°μ΄ν°λ₯Ό μ μ (sanitize)νμμμ€. μ΄λ μ£Όμ 곡격 λ° κΈ°ν μ νμ μ μ± μ½λ μ€νμ λ°©μ§νλ λ° λμμ΄ λ©λλ€.
5. κ°λ ₯ν μνΈν λΌμ΄λΈλ¬λ¦¬ μ¬μ©
νλ‘ νΈμλμμ λ°μ΄ν°λ₯Ό μνΈνν΄μΌ νλ κ²½μ°, μ κ²μ¦λκ³ μ μ§ κ΄λ¦¬λλ κ°λ ₯ν μνΈν λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμμμ€. μ체 μνΈν μκ³ λ¦¬μ¦μ μ’ μ’ κ³΅κ²©μ μ·¨μ½νλ―λ‘ μ¬μ©μ νΌνμμμ€.
6. μμ‘΄μ± μ κΈ°μ μ λ°μ΄νΈ
보μ μ·¨μ½μ μ ν¨μΉνκΈ° μν΄ νλ‘ νΈμλ λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬λ₯Ό μ΅μ μνλ‘ μ μ§νμμμ€. μ κΈ°μ μΌλ‘ μ λ°μ΄νΈλ₯Ό νμΈνκ³ κ°λ₯ν ν 빨리 μ μ©νμμμ€.
7. λ€λ¨κ³ μΈμ¦ (MFA) ꡬν
MFAλ μ¬μ©μμκ² λ κ°μ§ μ΄μμ μΈμ¦ μμλ₯Ό μ 곡νλλ‘ μꡬνμ¬ λ³΄μ κ³μΈ΅μ μΆκ°ν©λλ€. μ΄λ 곡격μκ° μ¬μ©μμ λΉλ°λ²νΈλ₯Ό νμ³€λλΌλ μ¬μ©μ κ³μ μ μμμν€λ κ²μ ν¨μ¬ λ μ΄λ ΅κ² λ§λλλ€.
8. μ ν리μΌμ΄μ μ 보μ μ·¨μ½μ λͺ¨λν°λ§
μλνλ λꡬμ μλ μ½λ κ²ν λ₯Ό μ¬μ©νμ¬ μ κΈ°μ μΌλ‘ μ ν리μΌμ΄μ μ 보μ μ·¨μ½μ μ μ€μΊνμμμ€. μ΄λ 곡격μκ° μ μ©νκΈ° μ μ μ μ¬μ μΈ λ³΄μ λ¬Έμ λ₯Ό μλ³νκ³ μμ νλ λ° λμμ΄ λ©λλ€.
μΌλ°μ μΈ νλ‘ νΈμλ 보μ μ·¨μ½μ μν
μ΄λ¬ν μ·¨μ½μ μ ν΄κ²°νλ κ²μ μμ ν νλ‘ νΈμλ μ격 μ¦λͺ μ μ₯ μ λ΅μ λ§€μ° μ€μν©λλ€:
1. μ¬μ΄νΈ κ° μ€ν¬λ¦½ν (XSS) λ°©μ§
- μ λ ₯ μ μ : μ μ± μ€ν¬λ¦½νΈμ μ£Όμ μ λ°©μ§νκΈ° μν΄ νμ μ¬μ©μ μ λ ₯μ μ μ νμμμ€.
- μΆλ ₯ μΈμ½λ©: μ£Όμ λ μ€ν¬λ¦½νΈμ μ€νμ λ°©μ§νκΈ° μν΄ λΈλΌμ°μ μμ λ°μ΄ν°λ₯Ό λ λλ§νκΈ° μ μ μΈμ½λ©νμμμ€.
- μ½ν μΈ λ³΄μ μ μ± (CSP): λΈλΌμ°μ κ° λ‘λν μ μλ 리μμ€λ₯Ό μ μ΄νκΈ° μν΄ μ격ν CSPλ₯Ό ꡬννμμμ€.
2. μ¬μ΄νΈ κ° μμ² μμ‘° (CSRF) 보νΈ
- λκΈ°ν ν ν° ν¨ν΄: μμ²μ΄ μΉμ¬μ΄νΈμμ λΉλ‘―λμλμ§ νμΈνκΈ° μν΄ κ° μμ²μ κ³ μ νκ³ μμΈ‘ν μ μλ ν ν°μ μ¬μ©νμμμ€.
- SameSite μΏ ν€ μμ±: μΏ ν€κ° μ¬μ΄νΈ κ° μμ²κ³Ό ν¨κ» μ μ‘λλ κ²μ λ°©μ§νκΈ° μν΄
SameSiteμμ±μ μ¬μ©νμμμ€. - μ΄μ€ μ μΆ μΏ ν€: μμμ κ°μΌλ‘ μΏ ν€λ₯Ό μ€μ νκ³ λμΌν κ°μ μ¨κ²¨μ§ νΌ νλμ ν¬ν¨μν΅λλ€. μλ²μμ μΏ ν€ κ°κ³Ό νΌ νλ κ°μ΄ μΌμΉνλμ§ νμΈνμμμ€.
3. ν ν° νμ·¨ λ°©μ§
- λ¨κΈ° ν ν°: 곡격μκ° νμΉ ν ν°μ μ¬μ©ν μ μλ κΈ°ν μ°½μ μ ννκΈ° μν΄ λ¨κΈ° ν ν°μ μ¬μ©νμμμ€.
- ν ν° μν: μ κΈ°μ μΌλ‘ μ ν ν°μ λ°κΈνκ³ μ΄μ ν ν°μ 무ν¨ννκΈ° μν΄ ν ν° μνμ ꡬννμμμ€.
- μμ ν μ μ₯μ:
HttpOnlyμΏ ν€μ κ°μ μμ ν μμΉμ ν ν°μ μ μ₯νμμμ€.
4. μ€κ°μ(MitM) 곡격 λ°©μ§
- HTTPS: ν΄λΌμ΄μΈνΈμ μλ² κ°μ λͺ¨λ ν΅μ μ μνΈννκΈ° μν΄ νμ HTTPSλ₯Ό μ¬μ©νμμμ€.
- HTTP Strict Transport Security (HSTS): λΈλΌμ°μ κ° μΉμ¬μ΄νΈμ μ°κ²°ν λ νμ HTTPSλ₯Ό μ¬μ©νλλ‘ κ°μ νκΈ° μν΄ HSTSλ₯Ό ꡬννμμμ€.
- μΈμ¦μ κ³ μ : 곡격μκ° κ°μ§ μΈμ¦μλ₯Ό μ¬μ©νμ¬ νΈλν½μ κ°λ‘μ±λ κ²μ λ°©μ§νκΈ° μν΄ μλ²μ μΈμ¦μλ₯Ό κ³ μ νμμμ€.
λ체 μΈμ¦ λ°©λ²
λλ‘λ κ°μ₯ μ’μ μ κ·Ό λ°©μμ νλ‘ νΈμλμ μ§μ μ격 μ¦λͺ μ μ μ₯νμ§ μλ κ²μ λλ€. λ€μκ³Ό κ°μ λ체 μΈμ¦ λ°©λ²μ κ³ λ €ν΄ λ³΄μμμ€:
1. OAuth 2.0
OAuth 2.0μ μ¬μ©μκ° μμ μ μ격 μ¦λͺ μ 곡μ νμ§ μκ³ λ μ 3μ μ ν리μΌμ΄μ μ μμ μ 리μμ€μ λν μ‘μΈμ€ κΆνμ λΆμ¬ν μ μλλ‘ νλ κΆν λΆμ¬ νλ μμν¬μ λλ€. μ΄λ 'Googleλ‘ λ‘κ·ΈμΈ' λλ 'FacebookμΌλ‘ λ‘κ·ΈμΈ' κΈ°λ₯μ μΌλ°μ μΌλ‘ μ¬μ©λ©λλ€.
μ΄μ :
- μ¬μ©μλ μΉμ¬μ΄νΈμ μ κ³μ μ λ§λ€ νμκ° μμ΅λλ€.
- μ¬μ©μλ μΉμ¬μ΄νΈμ μμ μ μ격 μ¦λͺ μ 곡μ ν νμκ° μμ΅λλ€.
- μ¬μ©μ 리μμ€μ λν μ‘μΈμ€ κΆνμ λΆμ¬νλ μμ νκ³ νμ€νλ λ°©λ²μ μ 곡ν©λλ€.
2. λΉλ°λ²νΈ μλ μΈμ¦
λΉλ°λ²νΈ μλ μΈμ¦ λ°©λ²μ μ¬μ©μκ° λΉλ°λ²νΈλ₯Ό κΈ°μ΅ν νμλ₯Ό μμ μ€λλ€. μ΄λ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ λ¬μ±ν μ μμ΅λλ€:
- μ΄λ©μΌ λ§€μ§ λ§ν¬: μ¬μ©μκ° λ‘κ·ΈμΈνκΈ° μν΄ ν΄λ¦ν μ μλ κ³ μ ν λ§ν¬λ₯Ό μ¬μ©μ μ΄λ©μΌ μ£Όμλ‘ λ³΄λ λλ€.
- SMS μΌνμ© λΉλ°λ²νΈ: μ¬μ©μκ° λ‘κ·ΈμΈνκΈ° μν΄ μ λ ₯ν μ μλ μΌνμ© λΉλ°λ²νΈλ₯Ό μ¬μ©μ μ νλ²νΈλ‘ 보λ λλ€.
- WebAuthn: νλμ¨μ΄ 보μ ν€ λλ μ체 μΈμ¦μ μ¬μ©νμ¬ μ¬μ©μ μ μμ νμΈν©λλ€.
μ΄μ :
- ν₯μλ μ¬μ©μ κ²½ν.
- λΉλ°λ²νΈ κ΄λ ¨ 보μ μ·¨μ½μ μν κ°μ.
μ κΈ°μ μΈ κ°μ¬ λ° μ λ°μ΄νΈ
보μμ μΌνμ± ν΄κ²°μ± μ΄ μλ μ§μμ μΈ νλ‘μΈμ€μ λλ€. μ κΈ°μ μΌλ‘ νλ‘ νΈμλ μ½λμ μμ‘΄μ±μμ 보μ μ·¨μ½μ μ κ°μ¬νμμμ€. μ΅μ 보μ λͺ¨λ² μ¬λ‘λ₯Ό μμ§νκ³ μ ν리μΌμ΄μ μ μ μ©νμμμ€. 보μ μ λ¬Έκ°μ μν μΉ¨ν¬ ν μ€νΈλ μ¬λ¬λΆμ΄ λμ³€μ μ μλ μ·¨μ½μ μ λ°κ²¬ν μ μμ΅λλ€.
κ²°λ‘
μμ ν νλ‘ νΈμλ μ격 μ¦λͺ μ μ₯μλ μΉ μ ν리μΌμ΄μ 보μμ μ€μν μΈ‘λ©΄μ λλ€. λ€μν μ μ₯ μ΅μ , μ μ¬μ μ·¨μ½μ λ° λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄ν¨μΌλ‘μ¨ μ¬μ©μμ λ°μ΄ν°λ₯Ό 보νΈνκ³ μ ν리μΌμ΄μ μ 무결μ±μ μ μ§νλ κ°λ ₯ν 보μ μ λ΅μ ꡬνν μ μμ΅λλ€. κ°λ° νλ‘μΈμ€μ λͺ¨λ λ¨κ³μμ 보μμ μ°μ μνκ³ , μ§ννλ μνμ μμ λκ°κΈ° μν΄ μ κΈ°μ μΌλ‘ 보μ μ‘°μΉλ₯Ό κ²ν νκ³ μ λ°μ΄νΈν΄μΌ ν©λλ€. μ¬λ°λ₯Έ λꡬλ₯Ό μ ννλ κ²μ κΈ°μ΅νμμμ€. μ μ ν ꡬμ±μ μΏ ν€λ νμ©λ μ μμ§λ§, JWTλ₯Ό μ¬μ©ν ν ν° κΈ°λ° μΈμ¦μ΄λ μ λ’°ν μ μλ μ 3μ μΈμ¦ μ 곡μ 체μ μμ‘΄νλ μ루μ μ΄ μ’ μ’ λ μ°μν μ κ·Ό λ°©μμ λλ€. μ ν리μΌμ΄μ μ΄ λ°μ νκ³ μλ‘μ΄ κΈ°μ μ΄ λ±μ₯ν¨μ λ°λΌ μ νμ μ¬νκ°νλ κ²μ λλ €μνμ§ λ§μμμ€.